package com.hmall.item.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hmall.common.dto.PageDTO;

import com.hmall.common.entity.Item;
import com.hmall.common.vo.PageVO;
import com.hmall.item.context.BaseContext;
import com.hmall.item.mapper.ItemMapper;
import com.hmall.item.service.ItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.Instant;
import java.util.Date;

/**
 * 商品服务
 *
 * @author fan
 * @date 2024/03/11
 */
@Service
@Slf4j
public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements ItemService {
    @Autowired
    private ItemMapper itemMapper;


    /**
     * 页面查询
     *
     * @param pageDTO 页面 DTO
     * @return {@link PageVO}<{@link Item}>
     */
    @Override
    public PageVO<Item> pageQuery(PageDTO pageDTO) {
        Page<Item> page = new Page<>(pageDTO.getPage(),pageDTO.getSize());
        itemMapper.selectPage(page,null);
        PageVO<Item> pageVO = new PageVO<>();
        pageVO.setList(page.getRecords());
        pageVO.setTotal(page.getTotal());
        Long currentId = BaseContext.getCurrentId();
        log.info("--------{}------",currentId);
        return pageVO;
    }

    /**
     * 按 ID 选择
     *
     * @param id 编号
     * @return {@link Item}
     */
    @Override
    public Item selectById(Long id) {
        return itemMapper.selectById(id);
    }

    /**
     * 插入一个
     *
     * @param item 项目
     */
    @Override
    public void insertOne(Item item) {
        item.setCreateTime(new Date());
        item.setUpdateTime(new Date());
        itemMapper.insert(item);
    }

    /**
     * 按 ID 修改状态
     *
     * @param id     编号
     * @param status 地位
     */
    @Override
    public void modifyStatusById(Long id, Integer status) {
        Item item = new Item();
        item.setId(id);
        item.setStatus(status);
        item.setUpdateTime(Date.from(Instant.now()));
        itemMapper.updateById(item);

    }

    /**
     * 修改项目
     *
     * @param item 项目
     */
    @Override
    public void modifyItem(Item item) {
        item.setUpdateTime(new Date());
        itemMapper.updateById(item);

    }

    /**
     * 按 ID 删除项目
     *
     * @param id 编号
     */
    @Override
    public void deleteItemById(Long id) {
        itemMapper.deleteById(id);
    }


}
